-- sage_skill
-- created by cheny
-- 贤者之语（辅助、增加属性）

-- 随机一下数组/两两交换
local function randomTable(arr)
    for oriIndex, value in pairs(arr) do
        local toIndex = math.random(#arr);
        local temp = arr[toIndex];
        arr[toIndex] = arr[oriIndex];
        arr[oriIndex] = temp;
    end
    return arr;
end

-- 当前可以使用的魔法
local function getSkills()
    local ret = {};
    local stoneSkills = MagicStoneM.getStoneSkills(USER_SKILL);

    if #stoneSkills <= 0 then
        return {};
    end

    -- 获取所有辅助石柱技能，排除已经学满的技能
    for _, skillId in pairs(stoneSkills) do
        if MagicStoneM.isFullAttrib(skillId) ~= true and
            SkillM.query(skillId, "target") == ATTACKER then
            -- 把符合条件的加入列表
            table.insert(ret, skillId);
        end
    end
    return ret;
end

return {
    -- 判断
    canTrigger = function(args)
        -- 不要弹尽粮绝了，留40%魔法
        local cur = ME.user:queryAttrib("mp");
        local max = ME.user:queryAttrib("max_mp");
        if cur * 100 < max * 40 then
            return false;
        end

        -- 圣者之语魔法
        local ret = getSkills();
        if #ret <= 0 then
            return false;
        end

        return true;
    end,

    -- 触发
    trigger = function(args)
        -- 圣者之语魔法
        local ret = getSkills();

        -- 随机排序一下
        ret = randomTable(ret);
        for _, skillId in pairs(ret) do
            if targetType == ATTACKER then
                -- 对自己施法
                if DungeonActionM.go("stone_skill", -1, nil, skillId) then
                    return true;
                end
            end
        end

        return false;
    end,
};
